'Build Date 25.9.2012
'##############
'Getriebe-Script
'##############

'ZF Ecomat II 

'(c) 2008-2010 Rüdiger Hülsmann

'Script Version: 1.2
'Omsi release: 1.0

'Needs:
'- engine
'- bremse

'Revision History:
'- Kyle Ortiz           08.03.2011      Script based off of the orignal Voith script. Made by MR made changes to make the ZF less Voith like
'- Kyle Ortiz		25.03.2011	Made a Few changes to make script less special voith like
'- Kyle Ortiz		04.04.2011	Added torque converter to 2C.
'- Kyle Ortiz		22.04.2011	More Tweaking
'- Kyle Ortiz		03.05.2011	More Tweaking - Rework Torque converter and retarder
'- Kyle Ortiz           05.06.2011	Make transmission more user friendly 
'- Kyle Ortiz           06.06.2011	Added Flexibility to the Script to make the Ecomat II
'- Kyle Ortiz           08.06.2011	Added a form of kick-down to the script and also a simple scheme of acceleration dependant shift points
'- Kyle Ortiz           08.06.2011	Cleaned up topodyno code 
'- Kyle Ortiz           2.3.2012	Revise Retarder
'- Kyle Ortiz		22.12.2012	Torque_Governor_set set to 0 in Neutral | Made shifting more smoother 
'- Kyle Ortiz		30.12.2012	Partial throttle during shift debugged 
'- Kyle Ortiz		16.2.2013	simulate transmission oil temperature  
'----------------------
'	Init
'----------------------

{macro:antrieb_init}
	1 (S.L.antrieb_getr_gangwahl) (S.L.antrieb_getr_gangvorwahl) (S.L.antrieb_retarder_sw)
	1 (S.L.antrieb_getr_aktugang)
	0 (S.L.antrieb_nyuszi_gomb)

	 1 (S.L.antrieb_shift_throttle)

	0 (S.L.antrieb_NBS)
	0 (S.L.antrieb_wandler_moment)
			       
	40050 50 (L.L.kmcounter_km) - random + (L.L.kmcounter_km) min (S.L.antrieb_fluid_last_change)

	(L.S.Weather_Temperature) (S.L.antrieb_temperature)
{end}

'----------------------
'	Frame
'----------------------

{macro:antrieb_frame}


	



'Berechnen der Abtriebsdrehzahl
	(L.L.Wheel_RotationSpeed_1_L) (L.L.Wheel_RotationSpeed_1_R) + 2 / (C.L.antrieb_i_achse) * (S.L.antrieb_n_kardanwelle)

'Einlegen der Fahrstufe Loading the gear

	(L.S.GetTime) (L.L.antrieb_getr_gangwahlzeitpunkt) - (C.L.antrieb_gangwahlzeit) >
	(L.L.antrieb_getr_gangvorwahl) (L.L.antrieb_getr_gangwahl) = ! &&
	(L.L.antrieb_failure_general) ! &&
	{if}
			
		(L.L.antrieb_getr_gangwahl) 1 =
		{if}
			(L.L.engine_on) 1 = 
			{if}
				(L.L.engine_n) (S.L.antrieb_rucksoundvol)
				(L.L.antrieb_kuppl_M_dn_min)   (S.L.antrieb_schaltmoment_soll)

				(L.L.antrieb_getr_gangvorwahl) 1 >

				{if}
					(L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd8) > (C.L.antrieb_ecomat_gears) 5 > &&
					
					{if}
						8 (S.L.antrieb_getr_aktugang)
						(T.L.ev_schaltruck)
					{else}
						(L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd7) > (C.L.antrieb_ecomat_gears) 4 > &&
					
					{if}
						7 (S.L.antrieb_getr_aktugang)
						(T.L.ev_schaltruck)
					{else}
					(L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd6) > (C.L.antrieb_ecomat_gears) 3 > &&
					
					{if}
						6 (S.L.antrieb_getr_aktugang)
						(T.L.ev_schaltruck)
					{else}
					(L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd5) > 
					
					{if}
						5 (S.L.antrieb_getr_aktugang)
						(T.L.ev_schaltruck)
					{else}
					(L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd4) >
					
					{if}
						4 (S.L.antrieb_getr_aktugang)
						(T.L.ev_schaltruck)
					{else}

					(L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd3) >
					
					{if}
						3 (S.L.antrieb_getr_aktugang)
						(T.L.ev_schaltruck)
					{else}
				       
					
							1 (S.L.antrieb_getr_aktugang)
							0 (S.L.antrieb_gear_engaged_timer)
							(T.L.ev_schaltruck)
											
										{endif}
									{endif}
								{endif}
							{endif}
						{endif}
					{endif}
				{else}
					(L.L.velocity) 5 <
					{if}
						1 (S.L.antrieb_getr_aktugang)
						0 (S.L.antrieb_gear_engaged_timer)
						(T.L.ev_schaltruck)
					{endif}
				{endif}
			{endif}
		{endif}	
		(L.L.antrieb_getr_gangvorwahl) (S.L.antrieb_getr_gangwahl)
	{endif}

'Gang rausnehmen, wenn Neutral angefordert

	(L.L.antrieb_getr_gangwahl) 1 =
	{if}
		0 (S.L.antrieb_getr_aktugang)
	{endif}

	(L.L.antrieb_getr_gangwahl) 0 =
	{if}
		-1 (S.L.antrieb_getr_aktugang)
	{endif}
'Verhindern, dass der Rückwärtsgang oberhalb von 5 km/h eingelegt werden kann

	(L.L.antrieb_getr_gangvorwahl) 0 =
	(L.L.velocity) 5 >= &&
	{if}
		1 (S.L.antrieb_getr_gangwahl)
	{endif}







'Prüfen, ob Gang gewechselt wird - aber nur, wenn Getriebe heil ist:

	(L.L.antrieb_failure_general) !
	{if}
		(M.L.antrieb_getr_chkNxtGear)
	{endif}

'Berechnung des aktuellen Motordrehmoments:

	(M.L.engine_moment)




 (L.L.engine_M) 0 <
{if}

(L.L.antrieb_schaltmoment_soll)  s0

	(L.L.antrieb_getr_aktugang) 4 =
	{if}
		(L.L.engine_M) abs 1.1 * s0
	{endif}

{else}
500  s1
(L.L.antrieb_schaltmoment_soll)  s0
{endif}


	(L.L.antrieb_getr_fest) !
	{if}
		(L.L.antrieb_schaltmoment) (L.S.Timegap) 500 * + l0 min  (S.L.antrieb_schaltmoment)
		3  (S.L.antrieb_coupling)
		
	{endif}


 	(M.L.antrieb_temperature)


'Fallunterscheidung, ob Getriebe reibt oder wandelt oder nicht:

	(L.L.antrieb_getr_fest)
	{if}
	1  (S.L.antrieb_coupling)
'#################################################################################
'	Berechnung der Beschleunigung des Antriebsstrangs (am Motorflansch) 
'     Calculate the acceleration of the drive train (on 'the flange)
'#################################################################################


		(L.L.n_Wheel) (L.L.antrieb_getr_ratio) * (L.L.engine_n) - 2 * pi * 60 / (L.S.Timegap) / 

'	Berechnung des Momentes am Motor durch Trägheit:

		(C.L.engine_J) * s0

'	Berechnung des vom Antriebsstrang durchgeleiteten Momentes

		l0 /-/ (L.L.engine_M) (L.L.engine_M_additional_load) - + s1


'	Wenn das Antriebsmoment zu groß ist oder ein Wandlergang eingelegt wird, rutscht die Kupplung durch:
'	If the torque is too large or a converter gear is engaged, the clutch slips:

		l1 abs (L.L.antrieb_schaltmoment) > (L.L.antrieb_getr_gangwahl) 1 <= || (L.L.antrieb_getr_aktugang) -1 = || (L.L.antrieb_wandler_engage) 1 = || 


		{if}

			0 (S.L.antrieb_getr_fest)

		{else}

'		Setzen des Momentes
'		Setting the torque

			l1 (S.L.antrieb_getr_M_an)


'		Berechnung des Getriebeabtriebmomentes:
'		Calculation of the transmission output torque:

			(L.L.antrieb_getr_M_an) (L.L.antrieb_getr_ratio) * (C.L.gear_efficiency) *  (S.L.M_Wheel)

'		Drehzahl des Motors ergibt sich aus der Getriebeabtriebswelle:
'		Speed of the engine is obtained from the transmission output shaft:


			(L.L.antrieb_getr_ratio) (L.L.n_Wheel) * (S.L.engine_n)		
		{endif}


		0 (S.L.antrieb_wandler_moment)

	{else}

	


'#################################################################################
'	Bestimmen, ob Leerlauf ist...: Determine if idle ...:
'#################################################################################

		(L.L.antrieb_getr_gangwahl) 1 = (L.L.antrieb_getr_aktugang) 0 = ||

		{if}
		       0 (S.L.Torque_Governor_set)
'		... Antriebs- und Getriebeantriebsmoment sind 0:
			0 (S.L.M_Wheel) (S.L.antrieb_getr_M_an)
			 
'	Berechnung der Drehzahlbeschleunigung:
' 	Calculation of speed acceleration:

	(L.L.engine_M) (L.L.antrieb_getr_M_an) (L.L.engine_M_additional_load) + - (C.L.engine_J)   /

'	... Berechnung der Motordrehzahl anhand der Drehzahlbeschleunigung:

	(L.S.Timegap) * 30 * pi / (L.L.engine_n) + (S.L.engine_n)

			0 (S.L.antrieb_wandler_moment)

'			Wenn Neutralgang beim Bremsen eingelegt wird
			(L.L.antrieb_getr_gangwahl) 1 =
			{if}
				0 (S.L.antrieb_retarder_wasrunning) (S.L.antrieb_gear_engaged_timer)
			{endif}

		{else}

'#################################################################################
'		Bestimmen, ob ein Wandlergang eingelegt ist...: Determine whether a converter gear is engaged
'#################################################################################

	(L.L.antrieb_getr_aktugang) -1 = (L.L.antrieb_wandler_engage) 1 = || (L.L.engine_n) 592 < ||  
		

			
			{if}
			(L.L.antrieb_getr_aktugang) 1 >
			{if}
			(C.L.antrieb_wandler_fillrate) 4 * s1
			{else}
			(C.L.antrieb_wandler_fillrate) s1
			{endif}

				(L.L.antrieb_wandler_moment) abs (L.L.antrieb_getr_M_an) abs >
				{if}
					(L.L.antrieb_wandler_moment) 0 >
					{if}
						(L.L.antrieb_getr_M_an) l1 (L.S.Timegap) * + (S.L.antrieb_getr_M_an)
						(L.L.antrieb_wandler_moment) (L.L.antrieb_getr_M_an) <
						{if}
							(L.L.antrieb_wandler_moment) (S.L.antrieb_getr_M_an)
						{endif}
					{else}
						(L.L.antrieb_getr_M_an) l1 (L.S.Timegap) * - (S.L.antrieb_getr_M_an)
						(L.L.antrieb_wandler_moment) (L.L.antrieb_getr_M_an) >
						{if}
							(L.L.antrieb_wandler_moment) (S.L.antrieb_getr_M_an)
						{endif}
					{endif}
				{else}
					(L.L.antrieb_wandler_moment) (S.L.antrieb_getr_M_an)
				{endif}
	
			
			
					(L.L.n_Wheel) (L.L.antrieb_getr_ratio) * s0 (S.L.antrieb_getr_n_ab) (L.L.engine_n) / (S.L.antrieb_wandler_ny)

						 						
							    

'					Berechnung des Motor-Antriebsmomentes

						(L.L.engine_n) 2 * 3.14 * 60 / (L.L.engine_n) 2 * 3.14 * 60 / * s1
						0.0042 (L.L.antrieb_wandler_ny) (F.L.antrieb_wandler_lambda) * l1 * (L.L.engine_n) (F.L.antrieb_wandler_lowrpmsoftness) *  (S.L.antrieb_wandler_moment)


'					Berechnung des Rad-Abtriebsmomentes
		
						(L.L.antrieb_wandler_ny) (F.L.antrieb_wandler_my) (L.L.antrieb_getr_M_an) * (L.L.antrieb_getr_ratio) * (L.L.engine_n) (F.L.antrieb_wandler_lowrpmsoftness) * (C.L.gear_efficiency) *  (S.L.M_Wheel) 
					
				

'			Vergleich der Ein- und Ausgangsleistungen:
				(L.L.M_Wheel) (L.L.n_Wheel) * 3.14 * 30000 / (S.L.antrieb_gesamtleistung)
				(L.L.antrieb_gesamtleistung) (L.L.antrieb_motorleistung) / (S.L.antrieb_eta)

	
'	Berechnung der Drehzahlbeschleunigung:
' 	Calculation of speed acceleration:

	(L.L.engine_M) (L.L.antrieb_getr_M_an) (L.L.engine_M_additional_load) + - (C.L.engine_J) /

'	... Berechnung der Motordrehzahl anhand der Drehzahlbeschleunigung:

	(L.S.Timegap) * 30 * pi / (L.L.engine_n) + (S.L.engine_n)

			



'#################################################################################
'			Sonst ist ein normaler Gang eingelegt:
'			Otherwise, a normal gear is engaged:
'#################################################################################

			{else}


'			Berechnung der Drehzahldifferenz:


				

				(L.L.antrieb_getr_ratio) (L.L.n_Wheel) * (L.L.engine_n) - s0



'			An dieser Stelle muss ggf. noch das unterschiedliche Kupplungsmoment eingesetzt werden:

				l0 0 <
				{if}
					(L.L.antrieb_schaltmoment)
				{else}
					(L.L.antrieb_schaltmoment) /-/
				{endif}
				(S.L.antrieb_getr_M_an)


				(L.L.engine_M) 1.8 * min
				(L.L.antrieb_getr_ratio) *
				(C.L.gear_efficiency) * (S.L.M_Wheel)


				

	(L.L.engine_M) (L.L.antrieb_getr_M_an) (L.L.engine_M_additional_load) + - (C.L.engine_J)   /

'	... Berechnung der Motordrehzahl anhand der Drehzahlbeschleunigung:

	(L.S.Timegap) * 30 * pi / (L.L.engine_n) + (S.L.engine_n)

'			Prüfen, ob sich das Vorzeichen der Drehzahldifferenz umgekehrt hat:

				(L.L.antrieb_getr_ratio) (L.L.n_Wheel) * (L.L.engine_n) - l0 * 0 <= (L.L.engine_n) 560 > &&
				{if}
					(L.L.antrieb_getr_ratio) (L.L.n_Wheel) * (S.L.engine_n)
					(L.L.n_Wheel) (L.L.antrieb_getr_ratio) * (L.L.engine_n) - 2 * pi * 60 /  (L.S.Timegap) / 

'					Berechnung des Momentes am Motor durch Trägheit:

					(C.L.engine_J)  * s0

'					Berechnung des vom Antriebsstrang durchgeleiteten Momentes

					l0 /-/ (L.L.engine_M) (L.L.engine_M_additional_load) - + (S.L.antrieb_getr_M_an)


'					Berechnung des Getriebeabtriebmomentes:
'					Calculation of the transmission output torque:

					(L.L.antrieb_getr_M_an) abs (L.L.antrieb_schaltmoment) abs <
					{if}
						(L.L.antrieb_getr_M_an) (L.L.antrieb_getr_ratio) * (C.L.gear_efficiency) * (S.L.M_Wheel)
						1 (S.L.antrieb_getr_fest)
						(L.L.antrieb_kuppl_M_up_max)   (S.L.antrieb_schaltmoment)
					{else}
						(L.L.antrieb_schaltmoment) /-/ (S.L.antrieb_getr_M_an) (L.L.antrieb_getr_ratio) * (C.L.gear_efficiency) * (S.L.M_Wheel)

							
					{endif}
					


				{endif}

				0 (S.L.antrieb_wandler_moment)

			{endif}
		{endif}

	{endif}




	


'#################################################################################
'	Retarder
'#################################################################################
	(L.L.Velocity) (C.L.retarder_speed) - (F.L.antrieb_retarder_speed_gov) (S.L.antrieb_retarder_spd_gov)
		
	(L.L.brake) 0.01 >
	(L.L.antrieb_retarder_sw) &&
	(L.L.antrieb_retarder_sw_direkt) ||
	(L.L.antrieb_getr_gangwahl) 1 > &&
	(L.L.Throttle) 0.1 < &&
	(L.L.antrieb_retarder_enable) &&
	(L.L.antrieb_getr_aktugang) 2 > &&
	(L.L.antrieb_n_kardanwelle) 0.1 > &&
	(L.L.antrieb_failure_general) ! &&
	(L.L.bremse_ABS_eingriff) ! &&
	(L.L.engine_throttle_injection) 0 < ||
	(L.L.antrieb_retarder_spd_gov) 0 > ||
	(L.L.antrieb_retarder_enable) &&
	
	{if}	

		(L.L.antrieb_retarder_armed) !
		{if}
			1 (S.L.antrieb_retarder_armed)
			0 (S.L.antrieb_retarder_armtime_elapsed)
		{endif}



		(L.L.antrieb_n_kardanwelle) (C.L.retarder_min_einschaltspeed) > (L.L.antrieb_retarder_armtime_elapsed) (C.L.antrieb_retarder_startdelay) > && (L.L.antrieb_retarder) ! && 
		{if}
			1 (S.L.antrieb_retarder)
			0 (S.L.antrieb_retarder_time_elapsed)
		{endif}



			1 (S.L.antrieb_retarderstufe)
	

'Verhaltensweise des Retarders beim Erreichen der Drehzahluntergrenze im 2. Gang:

		(L.L.antrieb_getr_aktugang) 2 < 
		(L.L.antrieb_retarder) 1 = &&
		{if}
			(C.L.antrieb_getr_version) s0 1 = l0 3 = ||
			{if}
				0 (S.L.antrieb_retarder) (S.L.antrieb_wendesatz)
				(L.L.engine_n) (S.L.antrieb_rucksoundvol)
				(T.L.ev_schaltruck)
			{endif}
		{endif}
	
	   
			(L.L.brake) !
			{if}
			1 s5
			

			{endif}


			(L.L.brake) 
			{if}
			5 s5
			

			{endif}

		(L.L.antrieb_retarder_armed)
		{if}
			(L.L.antrieb_retarder_armtime_elapsed) (L.S.Timegap) + (S.L.antrieb_retarder_armtime_elapsed)
			(L.L.antrieb_retarder_time_elapsed) (L.S.Timegap) l5 * + (S.L.antrieb_retarder_time_elapsed)
		{endif}

' Ausschalten des Retarders:

	{else}
		(L.L.antrieb_retarder) (L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd2) < &&
		{if}
			0 (S.L.antrieb_retarder_offtime) (S.L.antrieb_wendesatz)
			1 (S.L.antrieb_retarder_wasrunning)
		{endif}
		0 (S.L.antrieb_retarder) (S.L.antrieb_retarder_armed) (S.L.antrieb_retarder_armtime_elapsed) (S.L.antrieb_retarder_time_elapsed)	
	{endif}

'Umschaltverzögerung zwischen Bremsen und Traktion:

	(L.L.antrieb_retarder_wasrunning)
	{if}
		(L.L.antrieb_retarder_offtime) (L.S.Timegap) + (S.L.antrieb_retarder_offtime) 
		(C.L.antrieb_retarder_changetime) >
		(L.L.antrieb_getr_gangwahl) 1 > &&
		{if}
			(T.L.ev_retarder_aus)
			(L.L.engine_n) (S.L.antrieb_rucksoundvol)
		
	
			0 (S.L.antrieb_retarder_wasrunning) (S.L.antrieb_gear_engaged_timer)
		{endif}
	{endif}

	

'Bremsmoment des Retarders:
' 
'Calculate Angular Velocity 
(L.L.antrieb_angularvelocity) 2 pi (L.L.engine_n) * * 60 / (S.L.antrieb_angularvelocity)

'retarder ratio 

			(C.L.antrieb_ecomat_class) 1 =
			{if}
			1050 s6
			{endif}

			(C.L.antrieb_ecomat_class) 2 =
			{if}
			1050 s6
			{endif}

			(C.L.antrieb_ecomat_class) 3 =
			{if}
			1250 s6
			{endif}


			       

' retarder stage controller



	      	        (L.L.brake) 0.15 <
			{if}
			l6 0.5 * s7
			 1 (S.L.antrieb_retarder_stage) 

			{endif}

			(L.L.brake) 0.15 >= (L.L.brake) 0.25 < &&
			{if}
			l6 0.75 * s7
			 2 (S.L.antrieb_retarder_stage) 
			{endif}

			(L.L.brake) 0.25 >=
			{if}
			l6 s7
			 3 (S.L.antrieb_retarder_stage) 
			{endif}
	     
			(L.L.antrieb_retarder) 1 =
			{if}
				l6  (L.L.engine_n) 1900 / 1 min * (L.L.antrieb_retarder_time_elapsed) (F.L.retarder_fadein) * l7 min (S.L.antrieb_retardermoment) (L.L.antrieb_getr_ratio) * (C.L.gear_efficiency) * s0
				
					l0  (L.L.antrieb_retardermoment_last) >
					{if}
						 (L.L.antrieb_retardermoment_last)  (L.S.Timegap) 6000 * +  l0  min (S.L.antrieb_retardermoment_last)  

					{endif}



					l0   (L.L.antrieb_retardermoment_last) <
					{if}
						 (L.L.antrieb_retardermoment_last)  (L.S.Timegap) 6000 * - 0 max (S.L.antrieb_retardermoment_last)  
					{endif}
				
				  (L.L.antrieb_retardermoment_last) /-/ (L.L.M_Wheel)  +   (S.L.M_Wheel) 
			{else}
'		Ausfaden der Retarder-Bremsstärke
					 (L.L.antrieb_retardermoment_last)  (L.S.Timegap) 10000 * + 0 min  (S.L.antrieb_retardermoment_last) (S.L.antrieb_retardermoment) (L.L.M_Wheel) + (S.L.M_Wheel)
					(L.L.antrieb_retarder_volume) (L.S.Timegap) 2 * - 0 max (S.L.antrieb_retarder_volume) s0
					l0 0 =
					{if}
						0 (S.L.antrieb_wendesatz)
					{endif}
	
			{endif}













'#################################################################################
'	Planetengetriebe-Wendesatz (Fjü-Sound)
'#################################################################################
	
	(L.L.antrieb_retarder)  
	(L.L.antrieb_getr_gangwahl) 0 = ||
	{if}
		1 (S.L.antrieb_wendesatz) (S.L.antrieb_retarder_volume)
'		Rücksetzen auf 0 erfolgt beim Fadeout des Retarderbremsmoments
	{endif}
{end}



'#################################################################################
'	Bestimmung der Schaltgeschwindigkeiten
'#################################################################################

{macro:antrieb_getr_chkNxtGear}

'	Höchster Gang: s0!

'	Verzögerung der Kickdown-Schaltung:

	(L.L.throttle) 1 = (C.L.Kickdown_Enable) 1 = &&
	{if}
		(L.L.antrieb_kickdown_stellglied) (L.S.Timegap) 3 * + 1 min (S.L.antrieb_kickdown_stellglied)
		1 =
		{if}
			1 (S.L.antrieb_kickdown)
		{endif}
	{else}
		(L.L.antrieb_kickdown_stellglied) (L.S.Timegap) 3 * - 0 max (S.L.antrieb_kickdown_stellglied)
		0 =
		{if}
			0 (S.L.antrieb_kickdown)
		{endif}
	{endif}

'	Verzögerung der gaspedalabhängigen Schaltschwelle:

	
	(L.L.engine_throttle_injection) (L.L.antrieb_throttle_stellglied) >
	{if}
		(L.L.antrieb_throttle_stellglied) (L.S.Timegap) (C.L.throttle_stellglied_inc_rate) * + (L.L.engine_output) min (S.L.antrieb_throttle_stellglied)
	{else}
		(L.L.antrieb_throttle_stellglied) (L.S.Timegap) (C.L.throttle_stellglied_dec_rate) * - (L.L.engine_output) max (S.L.antrieb_throttle_stellglied)
	{endif}

		(L.L.engine_throttle_injection) (L.L.clutch_antrieb_throttle_stellglied) >
	{if}
		(L.L.clutch_antrieb_throttle_stellglied) (L.S.Timegap) (C.L.clutch_throttle_stellglied_inc_rate) * + (L.L.engine_output) min (S.L.clutch_antrieb_throttle_stellglied)
	{else}
		(L.L.clutch_antrieb_throttle_stellglied) (L.S.Timegap) (C.L.clutch_throttle_stellglied_dec_rate) * - (L.L.engine_output) max (S.L.clutch_antrieb_throttle_stellglied)
	{endif}
	
'	Berechnen der aktuellen Beschleunigung:
	
	(L.L.Velocity) (L.L.antrieb_last_geschwindigkeit) - 3.6 / (L.S.Timegap) / (S.L.antrieb_beschleunigung)
	(L.L.Velocity) (S.L.antrieb_last_geschwindigkeit)



'#################################################################################
'	Gearbox Controls
'#################################################################################

	(L.L.antrieb_getr_gangwahl) 0 =
	{if}
		0 s0
	{endif}
		
	(L.L.antrieb_getr_gangwahl) 1 =
	{if}
		1 s0
	{endif}

	(L.L.antrieb_getr_gangwahl) 2 =
	{if}
		2 s0
	{endif}

	(L.L.antrieb_getr_gangwahl) 3 =
	{if}
		3 s0
	{endif}

	(L.L.antrieb_getr_gangwahl) 4 =
	{if}
		4 s0
	{endif}

	(L.L.antrieb_getr_gangwahl) 5 =
	{if}
		5 s0
	{endif}

	(L.L.antrieb_getr_gangwahl) 6 =
	{if}
		6 s0
	{endif}

'#################################################################################
'	Topodyno settings/ Load Base Acceleration
'#################################################################################
'	Calculate change in Throttle per second:
	
	(L.L.engine_throttle_injection) (L.L.antrieb_last_throttle) - 1 / (L.S.Timegap) / (S.L.antrieb_delta_throttle)
	(L.L.engine_throttle_injection) (S.L.antrieb_last_throttle)

'	Smoothing out the acceleration to avoid rapid shifting point changes
	  (L.L.antrieb_beschleunigung) (L.L.antrieb_beschleunigung_last) >
	  {if}
		 (L.L.antrieb_beschleunigung_last) (L.S.Timegap) 2 * + 2 min (S.L.antrieb_beschleunigung_last)

	  {else}
		(L.L.antrieb_beschleunigung_last) (L.S.Timegap) 2 * - -2 max	(S.L.antrieb_beschleunigung_last)
	 {endif}
(C.L.antrieb_topodyn_enable) 
 {if}
0 (S.L.antrieb_LBSS_Sensitivity)

'	Use throttle to calculate the correct acceleration  
	(L.L.antrieb_beschleunigung_last) (S.L.antrieb_topodyn_Up)

    

'
	 (L.L.throttle) 0 > (L.L.velocity) 5 > &&
	{if}
		(L.L.antrieb_topodyn_Up) (L.L.throttle) (F.L.topodyn_up) (L.L.antrieb_current_ratio) * <
		{if}						
			(L.L.antrieb_topodyn_dn) (L.S.Timegap) 250 * + (C.L.Topodyn_shift_adjustment_Up_max) min (S.L.antrieb_topodyn_dn)

		{else}
			(L.L.antrieb_topodyn_dn) (L.S.Timegap) 150 * - 0 max (S.L.antrieb_topodyn_dn)

		{endif}
	{else}

		0 (S.L.antrieb_topodyn_dn)
	{endif}

	 (L.L.throttle) 0 > (L.L.velocity) 5 > &&
	 {if}
		(L.L.antrieb_topodyn_Up) (L.L.throttle) (F.L.topodyn_dn) (L.L.antrieb_current_ratio) * <
			{if}						
				(L.L.antrieb_topodyn_Ups) (L.S.Timegap) 250 * + (C.L.Topodyn_shift_adjustment_Dn_max) min (S.L.antrieb_topodyn_Ups)
			{else}
				(L.L.antrieb_topodyn_Ups) (L.S.Timegap) 150 * - 0 max (S.L.antrieb_topodyn_Ups)
			{endif}
	{else}

			0 (S.L.antrieb_topodyn_Ups)
	{endif}
	(L.L.antrieb_topodyn_Ups) (L.L.antrieb_current_ratio) / (S.L.antrieb_topodyn_factor_Ups)
	(L.L.antrieb_topodyn_dn) (L.L.antrieb_current_ratio) / (S.L.antrieb_topodyn_factor) 

{else}
'#################################################################################
'	Load Based Shifting Points
'#################################################################################
0 (S.L.antrieb_topodyn_factor_Ups)

	(L.L.Throttle) 0.95 >
	{if}
		0.38 (L.L.antrieb_current_ratio) * (C.L.antrieb_LBSS_Sensitivity) * s5 
		0.58 (L.L.antrieb_current_ratio) * (C.L.antrieb_LBSS_Sensitivity) * s6


		(L.L.antrieb_beschleunigung_last) l5 < (C.L.antrieb_LBSS_Sensitivity) && 
		{if}
			250 (L.L.antrieb_current_ratio) /  (S.L.antrieb_LBSS_Sensitivity)
		{endif}

		(L.L.antrieb_beschleunigung_last) l5 > (L.L.antrieb_beschleunigung_last) l6 < && (C.L.antrieb_LBSS_Sensitivity) &&
		{if}
			0 (S.L.antrieb_LBSS_Sensitivity)
		{endif}

		(L.L.antrieb_beschleunigung_last) l6 > (C.L.antrieb_LBSS_Sensitivity) &&
		{if}
			 -200  (L.L.antrieb_current_ratio) / (S.L.antrieb_LBSS_Sensitivity)
		{endif}
			0 (S.L.antrieb_topodyn_factor) 
		{endif}

	{else}
		0 (S.L.antrieb_LBSS_Sensitivity)
	{endif}
{endif}

'#################################################################################
'	Automatische Neutralschaltung bei Stillstand
'#################################################################################

(C.L.antrieb_getr_version) 1 >
{if}
	(L.L.antrieb_gear_engaged_timer) (L.S.Timegap) + (S.L.antrieb_gear_engaged_timer)
	(L.L.antrieb_n_kardanwelle) (C.L.antrieb_neutral_maxspeed) <
	(L.L.antrieb_getr_gangwahl) 1 > &&
	(L.L.antrieb_retarder) ! &&
	(L.L.antrieb_retarder_wasrunning) ! &&	
	{if}
		(L.L.bremse_p_Brzyl_HA) (C.L.antrieb_neutral_brakepressure) > 
		{if}
			(L.L.antrieb_neutral_requested) !
			{if}
				1 (S.L.antrieb_neutral_requested)

				(C.L.antrieb_getr_version) 2 = !
				(C.L.antrieb_getr_version) 2 = (L.L.antrieb_gear_engaged_timer) (C.L.antrieb_gear_engaged_mintime) < && ||
				{if}
					0 (S.L.antrieb_gear_engaged_timer)
				{endif}
			{endif}
			
			(L.L.antrieb_neutral_requested)
			(L.L.antrieb_gear_engaged_timer) (C.L.antrieb_gear_engaged_mintime) >= &&
			{if}
				0 (S.L.antrieb_getr_aktugang)

					(L.L.throttle) 0.1 >
					{if}
				 (L.L.engine_throttle_injection) 0 min (S.L.engine_throttle_injection)

				 {endif}

				(L.L.antrieb_getr_gangwahl) 2 > (L.L.engine_on) &&
				{if}
				(L.L.antrieb_NBS) (L.S.Timegap) 1 * + 1 min (S.L.antrieb_NBS)
				{else}
				0 (S.L.antrieb_NBS)
				{endif}
			{endif}
		   
		{else}	
			(L.L.antrieb_NBS) (L.S.Timegap) 1.5 * - 0 max (S.L.antrieb_NBS)
			1 (S.L.antrieb_getr_aktugang)
			
			
			0 (S.L.antrieb_neutral_requested) (S.L.antrieb_gear_engaged_timer)
			
		{endif}
		
	{endif}
{endif}

	(L.L.antrieb_neutral_requested) (L.L.engine_on) && (L.L.antrieb_getr_gangwahl) 1 > &&
		{if}
			(L.L.antrieb_NBS) (L.S.Timegap) 1 * + 1 min (S.L.antrieb_NBS)
		{else}
			(L.L.antrieb_NBS) (L.S.Timegap) 1 * - 0 max (S.L.antrieb_NBS)
		{endif}


' coupling torque manauplator


	(C.L.antrieb_ecomat_class) 1 =
		{if}
			(C.L.antrieb_kuppl_M_up_max) (S.L.antrieb_kuppl_M_up_max)  
			{else}
				 (C.L.antrieb_ecomat_class) 2 =
				 {if}
					 (C.L.antrieb_kuppl_M_up_max_1) (S.L.antrieb_kuppl_M_up_max)  

					 {else}
					 (C.L.antrieb_ecomat_class) 3 =
						 {if}
							(C.L.antrieb_kuppl_M_up_max_2) (S.L.antrieb_kuppl_M_up_max)  
						 {endif}
				 {endif}
		 {endif}





				(C.L.antrieb_ecomat_class) 1 =
					{if}
						(C.L.antrieb_kuppl_M_up_min) (S.L.antrieb_kuppl_M_up_min)
					{else}
					(C.L.antrieb_ecomat_class) 2 =
						 {if}
							(C.L.antrieb_kuppl_M_up_min_1) (S.L.antrieb_kuppl_M_up_min)

						 {else}
							 (C.L.antrieb_ecomat_class) 3 =
							{if}
								(C.L.antrieb_kuppl_M_up_min_2) (S.L.antrieb_kuppl_M_up_min)
							 {endif}
						 {endif}
					 {endif}




				(C.L.antrieb_ecomat_class) 1 =
					{if}
					(C.L.antrieb_kuppl_M_dn_max) (S.L.antrieb_kuppl_M_dn_max)
					{else}
				 (C.L.antrieb_ecomat_class) 2 =
				 {if}
					 (C.L.antrieb_kuppl_M_dn_max_1)	(S.L.antrieb_kuppl_M_dn_max)

					 {else}
			          (C.L.antrieb_ecomat_class) 3 =
				  {if}
					(C.L.antrieb_kuppl_M_dn_max_2) (S.L.antrieb_kuppl_M_dn_max)
					 {endif}
					 {endif}
					 {endif}



					     
				(C.L.antrieb_ecomat_class) 1 =
					{if}
					(C.L.antrieb_kuppl_M_dn_min) (S.L.antrieb_kuppl_M_dn_min)
					{else}
						(C.L.antrieb_ecomat_class) 2 =
						 {if}
							 (C.L.antrieb_kuppl_M_dn_min_1) (S.L.antrieb_kuppl_M_dn_min)

						 {else}
							(C.L.antrieb_ecomat_class) 3 =
							 {if}
							(C.L.antrieb_kuppl_M_dn_min_2) (S.L.antrieb_kuppl_M_dn_min) 
							 {endif}
						 {endif}
					 {endif}




      (L.L.M_Wheel) (L.L.antrieb_getr_ratio) / (C.L.gear_efficiency) / (S.L.antrieb_dyno) 


(L.L.engine_M) (L.L.engine_n) (F.L.engine_M_maxThrottle) / s9

       (L.L.gearchange) 0.8 >

       		{if}
			0 (S.L.gearchange)

		{endif}

			(L.L.antrieb_getr_aktugang) s1


			1 =
			{if}
				(C.L.antrieb_getr_ratio1) (S.L.antrieb_current_ratio) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
				1 (S.L.antrieb_wandler_engage)
				(L.L.antrieb_kickdown)
				{if}
					(C.L.antrieb_getr_autoSwUpkickdnSpd1) s3 s4	
				{else}
					(C.L.antrieb_getr_autoSwUpMinSpd1)  s4
					(C.L.antrieb_getr_autoSwUpMaxSpd1)  s3
				{endif}
				(L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwUpMinSpd1) < 
				{if}
					0 (S.L.antrieb_is_downshift)
				{endif}

				 (L.L.antrieb_is_downshift) 1 = 
				 {if}
					1.5 s8
					(L.L.engine_throttle_injection) (M.L.antrieb_throttlegovernor_1c) 0.7 * min (S.L.engine_internal_throttle)
				 {else}
					(C.L.antrieb_hold_gear) s8
					     
			
						 (M.L.antrieb_throttlegovernor_1c) 
				
				 {endif}


				

				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_kickdown_sense) l8 > && 
				 {if}
					 (C.L.lock_up_type) 1 = (C.L.lock_up_type) 6 = || (L.L.antrieb_is_downshift) 1 = || (C.L.lock_up_type) 4 = (L.L.antrieb_kickdown) && ||
					{if}	
						(M.L.antrieb_throttlelimitor)
						700 (S.L.Torque_Governor_set)
						
						2 (S.L.antrieb_getr_aktugang)
					 (L.L.engine_M) 1.2 * (L.L.antrieb_kuppl_M_up_min) max   (S.L.antrieb_schaltmoment)

					 (L.L.antrieb_kuppl_M_up_max) (S.L.antrieb_schaltmoment_soll)
						(T.L.ev_gear_upshift1C1L)
					
					{endif}

					(C.L.lock_up_type) 2 = (C.L.lock_up_type) 5 = || (L.L.antrieb_is_downshift) 0 = && (C.L.lock_up_type) 3 = || (C.L.lock_up_type) 4 = (L.L.antrieb_kickdown) ! && ||
					{if}
					
						3 (S.L.antrieb_getr_aktugang)
						 0 (S.L.antrieb_wandler_moment)
						(L.L.antrieb_kuppl_M_up_max)   s6
						(L.L.antrieb_kuppl_M_up_max)   s7
					 (L.L.engine_M) (L.L.antrieb_kuppl_M_up_min) max   (S.L.antrieb_schaltmoment)

					 (L.L.antrieb_kuppl_M_up_max) (S.L.antrieb_schaltmoment_soll)
					(T.L.ev_gear_upshift1C2C)
					{endif}

				{endif}	

				(L.L.antrieb_n_kardanwelle) 80 <
				{if}
					0 (S.L.antrieb_is_downshift)

				{endif}	

			

			0 (S.L.antrieb_is_downshift1)
			(M.L.antrieb_gearwhine)
			(M.L.antrieb_kickdown_time)

			{endif}


			l1 -1 =
			{if}
				(C.L.antrieb_getr_ratioR) (S.L.antrieb_current_ratio) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
				
			
			(M.L.antrieb_throttlegovernor_R)
			(M.L.antrieb_gearwhine)

			{endif}


			l1 2 =
			{if}
				(C.L.antrieb_getr_ratio1) (S.L.antrieb_current_ratio) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
				
				0 (S.L.antrieb_wandler_engage)
				(L.L.antrieb_kickdown)
				{if}
					(C.L.antrieb_getr_autoSwUpkickdnSpd2) s3 s4

				{else}
					(C.L.antrieb_getr_autoSwUpMinSpd2) (L.L.antrieb_topodyn_factor) +  s4
					(C.L.antrieb_getr_autoSwUpMaxSpd2) (L.L.antrieb_topodyn_factor) +  s3
				{endif}


     				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_kickdown_sense) (C.L.antrieb_hold_gear) > && (L.L.antrieb_beschleunigung) (C.L.min_upshift_acceleration) > && l0 3 >= &&	(L.L.antrieb_retarder_armed) ! && (L.L.antrieb_kickdown_sense1) 1 > &&
				 {if}
				
					0 (S.L.antrieb_is_downshift)
					(M.L.antrieb_throttlelimitor)
					4 (S.L.antrieb_getr_aktugang)
						
					 (L.L.engine_M) (L.L.antrieb_kuppl_M_up_min) max   (S.L.antrieb_schaltmoment)

					(L.L.antrieb_kuppl_M_up_max)  (S.L.antrieb_schaltmoment_soll)
					(T.L.ev_gear_upshift1)			
				{endif}
				(L.L.antrieb_kickdown) 
				{if}
					(C.L.antrieb_getr_autoSwDnkickdnSpd2) s3 s4
				{else}
					(C.L.antrieb_getr_autoSwDnMinSpd2) s4
					(C.L.antrieb_getr_autoSwDnMaxSpd2) s3
				{endif}
				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) >
				{if}
					(M.L.antrieb_throttlelimitor)

					1 (S.L.antrieb_getr_aktugang)
					(L.L.antrieb_kuppl_M_dn_max)   s6
					(L.L.antrieb_kuppl_M_dn_min)   s7
					0 (S.L.antrieb_schaltmoment)
					100 (S.L.antrieb_wandler_moment)
					(T.L.ev_gear_downshift2)
				{endif}

			0 (S.L.antrieb_is_downshift1)
								(L.L.throttle) 0.1 > 
			{if}
				(M.L.antrieb_kickdown_time1)
			{else}
				0 (S.L.antrieb_kickdown_sense1)
			{endif}
		    		
						(M.L.antrieb_throttlegovernor_1l)
					
			
			0 (S.L.antrieb_is_downshift1)
			(M.L.antrieb_kickdown_time)
			(M.L.antrieb_gearwhine)

			{endif}
'Add gear here 
l1 3 =
			{if}
				(C.L.antrieb_getr_ratio2) (S.L.antrieb_current_ratio) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
				


				1 (S.L.antrieb_wandler_engage)
				(L.L.antrieb_kickdown)
				{if}	

					(C.L.antrieb_getr_autoSwUpkickdnSpd3)  s3 s4	
				{else}
					(C.L.antrieb_getr_autoSwUpMinSpd3) s4
					(C.L.antrieb_getr_autoSwUpMaxSpd3) s3				
				{endif}

				(L.L.antrieb_throttle_stellglied) 0.8 > 
				{if}	

					0.45  s5	
				{else}
					0.15 s5		
				{endif}

				     (M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_kickdown_sense) 0.6 > && l9 l5 > &&
				 {if}
				         1 (S.L.upshift)
	       		  0 (S.L.dnshift)
					4 (S.L.antrieb_getr_aktugang)
					0 (S.L.antrieb_is_downshift)

					0 (S.L.antrieb_kickdown_sense) (S.L.antrieb_is_downshift)	(S.L.gearchange) (S.L.gearchange_dn) (S.L.gearchange_up) (S.L.antrieb_is_gearchange)
					
					 (L.L.engine_M) (L.L.antrieb_kuppl_M_up_min) max   (S.L.antrieb_schaltmoment)

					 (L.L.antrieb_kuppl_M_up_max) (S.L.antrieb_schaltmoment_soll)
					(T.L.ev_gear_upshift2)			
				{endif}
				



					(L.L.antrieb_kickdown) l0 3 <= ||
					{if}
						(C.L.antrieb_getr_autoSwDnkickdnSpd3) s3 s4
					{else}
						(C.L.antrieb_getr_autoSwDnMinSpd3) s4
						(C.L.antrieb_getr_autoSwDnMaxSpd3) s3

					{endif}


					(L.L.antrieb_is_downshift) 1 = (L.L.throttle) 1 = && (C.L.lock_up_type) 2 = &&
					{if}
						(C.L.antrieb_getr_autoSwUpMaxSpd2) s3 s4
					{endif}

 				   (M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) >
				 {if}
					(L.L.gearchange_dn) (L.S.Timegap) 1 * + (S.L.gearchange_dn)
					{else}
					0 (S.L.gearchange_dn)
				 {endif}

					 (L.L.gearchange_dn) 0.2 >
					{if}
						(M.L.antrieb_throttlelimitor)
						1 (S.L.antrieb_getr_aktugang)
						(L.L.antrieb_kuppl_M_dn_max)   s6
						(L.L.antrieb_kuppl_M_dn_min)   s7
						100 (S.L.antrieb_schaltmoment)
						
					{endif}
			

					(L.L.antrieb_is_downshift1) 1 = (L.L.antrieb_kickdown_sense) 0.3 < &&
					{if}
						
					{else}


						0 (S.L.antrieb_is_downshift1)

					{endif}
			
						(M.L.antrieb_throttlegovernor_2c)
					
					
				
					
					(M.L.antrieb_gearwhine)
					(M.L.antrieb_kickdown_time)
			{endif}




l1 4 =
			{if}
				(C.L.antrieb_getr_ratio2) (S.L.antrieb_current_ratio) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
				0 (S.L.antrieb_wandler_engage)


				(L.L.antrieb_kickdown)
				{if}	
				(C.L.antrieb_getr_autoSwUpkickdnSpd4) s3 s4		
				{else}
					(C.L.antrieb_getr_autoSwUpMinSpd4) (L.L.antrieb_topodyn_factor) + s4
					(C.L.antrieb_getr_autoSwUpMaxSpd4) (L.L.antrieb_topodyn_factor) +  s3

				{endif}
			



				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_beschleunigung) (C.L.min_upshift_acceleration) > && l0 3 > && (L.L.antrieb_kickdown_sense1) 1 > && (L.L.antrieb_kickdown_sense) 1 > && (L.L.antrieb_retarder_armed) ! && (M.L.Max_Allow_RPM) (L.L.antrieb_n_kardanwelle) < ||
				 {if}
					(M.L.antrieb_throttlelimitor)
					 
					  1 (S.L.gearshift_unlock)
					 5 (S.L.antrieb_getr_aktugang)
					 (L.L.engine_M) (L.L.antrieb_kuppl_M_up_min) max   (S.L.antrieb_schaltmoment)

					(L.L.antrieb_kuppl_M_up_max)  (S.L.antrieb_schaltmoment_soll)
					(T.L.ev_gear_upshift3)
						

				{endif}
				
				
				(L.L.antrieb_kickdown) l0 3 <= ||
				{if}
					(C.L.antrieb_getr_autoSwDnkickdnSpd4) s3 s4
				{else}
					(C.L.antrieb_getr_autoSwDnMinSpd4) s4
					(C.L.antrieb_getr_autoSwDnMaxSpd4)  s3
				{endif}
				
				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_kickdown_sense) (C.L.antrieb_hold_gear) > && (L.L.antrieb_is_downshift1) (L.L.throttle) && ||
								 {if}
	
					0 (S.L.antrieb_kickdown_sense) (S.L.antrieb_is_downshift)	(S.L.gearchange) (S.L.gearchange_dn) (S.L.gearchange_up) (S.L.antrieb_is_gearchange)
					1 (S.L.antrieb_is_downshift)
					1 (S.L.antrieb_is_downshift1)


					 0 (S.L.upshift)
	       				1 (S.L.dnshift)
					3 (S.L.antrieb_getr_aktugang)
					(L.L.antrieb_kuppl_M_dn_max)   s6
					(L.L.antrieb_kuppl_M_dn_min)   s7
					(M.L.antrieb_getr_schaltmoment) (S.L.antrieb_schaltmoment_soll) 
					0 (S.L.antrieb_schaltmoment)
				
				{endif}


					  
			 	
						(M.L.antrieb_throttlegovernor_2l)
					
					
					
						0 (S.L.antrieb_is_downshift)




					(L.L.throttle) 0.1 > 
					{if}
						(M.L.antrieb_kickdown_time1)
					{else}
						0 (S.L.antrieb_kickdown_sense1)
					{endif}

					(M.L.antrieb_kickdown_time)
					(M.L.antrieb_gearwhine)

			{endif}
		

l1 5 =
			{if}
				(C.L.antrieb_getr_ratio3) (S.L.antrieb_current_ratio) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio) 

			

				(L.L.antrieb_kickdown)
				{if}
					(C.L.antrieb_getr_autoSwUpkickdnSpd5) s3 s4	
				{else}
					(C.L.antrieb_getr_autoSwUpMinSpd5) (L.L.antrieb_topodyn_factor) + s4
					(C.L.antrieb_getr_autoSwUpMaxSpd5) (L.L.antrieb_topodyn_factor) +  s3
					
					
				{endif}
				
				

				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_beschleunigung) (C.L.min_upshift_acceleration) > && l0 3 > && (L.L.antrieb_kickdown_sense1) 1 > && (L.L.antrieb_kickdown_sense) (C.L.antrieb_hold_gear) > && (L.L.antrieb_retarder_armed) ! &&   (M.L.Max_Allow_RPM) (L.L.antrieb_n_kardanwelle) < ||
	   				 {if}
					(M.L.antrieb_throttlelimitor)
					6 (S.L.antrieb_getr_aktugang)
					 (L.L.engine_M)  (L.L.antrieb_kuppl_M_up_min) max  (S.L.antrieb_schaltmoment)

					 (L.L.antrieb_kuppl_M_up_max) (S.L.antrieb_schaltmoment_soll)						
					(T.L.ev_gear_upshift4)
					
					
				{endif}



				(L.L.antrieb_kickdown)  
				{if}
					(C.L.antrieb_getr_autoSwDnkickdnSpd5) s3 s4
				{else}
					
					(C.L.antrieb_getr_autoSwDnMinSpd5) (L.L.antrieb_topodyn_factor_Ups) + s4 
					(C.L.antrieb_getr_autoSwDnMaxSpd5) (L.L.antrieb_topodyn_factor_Ups) +  s3
						
					
				
				{endif}
				







								l0 3 <=
				{if}
					(C.L.rpmgov) 75 - (C.L.antrieb_getr_ratio2) / s3 s4
				
				{endif}
				
				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_kickdown_sense) (C.L.antrieb_hold_gear) > &&
				 {if}	
					(M.L.antrieb_throttlelimitor_1)
					4 (S.L.antrieb_getr_aktugang)
					(L.L.antrieb_kuppl_M_dn_max)   s6
					(L.L.antrieb_kuppl_M_dn_min)   s7
					 (L.L.engine_M) 0.7 *  (S.L.antrieb_schaltmoment) (S.L.antrieb_schaltmoment_soll)	 
					 (C.L.lock_up_type) 5 = (C.L.lock_up_type) 6 = ||
					 {if}	
					
					0 (S.L.antrieb_is_downshift1) 
					{else}
					
					 1 (S.L.antrieb_is_downshift1)
					{endif}
					1 (S.L.antrieb_is_downshift)
					(T.L.ev_gear_downshift3L2L)
				{endif}
			
				 
						(M.L.antrieb_throttlegovernor_3)
					

					



					(L.L.throttle) 0.1 > 
					{if}
						(M.L.antrieb_kickdown_time1)
					{else}
						0 (S.L.antrieb_kickdown_sense1)
					{endif}

					(M.L.antrieb_kickdown_time)
					(M.L.antrieb_gearwhine)

					   (L.L.antrieb_kickdown_sense) 1 >
					   {if}
					  (L.L.antrieb_kuppl_M_up_max) (S.L.antrieb_schaltmoment)
					    0 (S.L.antrieb_wandler_engage)

					   {endif}

			{endif}




			l1 6 =
			{if}
				(C.L.antrieb_getr_ratio4) (S.L.antrieb_current_ratio) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)

				
				(L.L.antrieb_kickdown)
				{if}
					
						(C.L.antrieb_getr_autoSwUpkickdnSpd6) s3 s4
						
				{else}
					(C.L.antrieb_getr_autoSwUpMinSpd6) (L.L.antrieb_topodyn_factor) + s4
					(C.L.antrieb_getr_autoSwUpMaxSpd6) (L.L.antrieb_topodyn_factor) +  s3
					
						
				{endif}

				

				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (C.L.antrieb_ecomat_gears) 4 > && (L.L.antrieb_kickdown_sense1) 1 > && (L.L.antrieb_beschleunigung) (C.L.min_upshift_acceleration) > &&  (L.L.antrieb_kickdown_sense) (C.L.antrieb_hold_gear) > && l0 3 > && (L.L.antrieb_retarder_armed) ! && (M.L.Max_Allow_RPM) (L.L.antrieb_n_kardanwelle) < ||
				 {if}
					(M.L.antrieb_throttlelimitor)
					7 (S.L.antrieb_getr_aktugang)
					(L.L.antrieb_kuppl_M_up_max) (S.L.antrieb_schaltmoment)

					 (L.L.antrieb_kuppl_M_up_max) (S.L.antrieb_schaltmoment_soll)
					(T.L.upshift5)			
				{endif}

				

			
				(L.L.antrieb_kickdown) 
				{if}
				(C.L.antrieb_getr_autoSwDnkickdnSpd6)  s3 s4
					
				{else}
					(C.L.antrieb_getr_autoSwDnMinSpd6) (L.L.antrieb_topodyn_factor_Ups) + s4
					(C.L.antrieb_getr_autoSwDnMaxSpd6) (L.L.antrieb_topodyn_factor_Ups) +  s3
					
					
				{endif}
				

				 (L.L.antrieb_retarder_stage) 1 > 
				{if}
				   1300 (L.L.antrieb_current_ratio) / s3 s4
				{endif}

				l0 3 <=
				{if}
					(C.L.rpmgov) 75 - (C.L.antrieb_getr_ratio3) / s3 s4
				
				{endif}
				

				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_kickdown_sense) (C.L.antrieb_hold_gear) > &&
				{if}

				       (T.L.ev_gear_downshift3)
					(M.L.antrieb_throttlelimitor_1)
					1 (S.L.dnshift)	
					5 (S.L.antrieb_getr_aktugang)
					(L.L.antrieb_kuppl_M_dn_max)   s6

					(L.L.antrieb_kuppl_M_dn_min)   s7
					 

					(L.L.engine_throttle_injection) 
					 {if}
					  1 (S.L.antrieb_wandler_engage)
					  (L.L.antrieb_kuppl_M_dn_max)  (S.L.antrieb_schaltmoment) 

					    {else}
					  (L.L.engine_M) 0.8 * abs (S.L.antrieb_schaltmoment)
					 {endif}
					1 (S.L.antrieb_is_downshift1) (S.L.antrieb_is_downshift)

					
				{endif}
			
		
		 		
						(M.L.antrieb_throttlegovernor_4)
					

						
					
				

			
			(L.L.throttle) 0.1 > 
			{if}
				(M.L.antrieb_kickdown_time1)
			{else}
				0 (S.L.antrieb_kickdown_sense1)
			{endif}


				(M.L.antrieb_kickdown_time)
				(M.L.antrieb_gearwhine)
			{endif}




			l1 7 =
			{if}
				(C.L.antrieb_getr_ratio5) (S.L.antrieb_current_ratio) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)



				(L.L.antrieb_kickdown)
				{if}
				
						(C.L.antrieb_getr_autoSwUpkickdnSpd7) s3 s4
						
				{else}
					(C.L.antrieb_getr_autoSwUpMinSpd7) (L.L.antrieb_topodyn_factor) + s4
					(C.L.antrieb_getr_autoSwUpMaxSpd7) (L.L.antrieb_topodyn_factor) +  s3

					
				{endif}

				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) <  (L.L.antrieb_beschleunigung) (C.L.min_upshift_acceleration) > && (C.L.antrieb_ecomat_gears) 5 > && l0 3 > && (L.L.antrieb_kickdown_sense) (C.L.antrieb_hold_gear) > && (L.L.antrieb_retarder_armed) ! && (M.L.Max_Allow_RPM) (L.L.antrieb_n_kardanwelle) < ||
				{if}
					(M.L.antrieb_throttlelimitor)
					8 (S.L.antrieb_getr_aktugang)
					 (L.L.engine_M) 1.25 * (L.L.antrieb_kuppl_M_up_min) max   (S.L.antrieb_schaltmoment)

					 (L.L.antrieb_kuppl_M_up_max) (S.L.antrieb_schaltmoment_soll)
					(T.L.ev_gear_upshift6)			
				{endif}

				
				(L.L.antrieb_kickdown) l0 3 <= || 
				{if}
					(C.L.antrieb_getr_autoSwDnkickdnSpd7) s3 s4
				{else}
					(C.L.antrieb_getr_autoSwDnMinSpd7) (L.L.antrieb_topodyn_factor_Ups) + s4
					(C.L.antrieb_getr_autoSwDnMaxSpd7) (L.L.antrieb_topodyn_factor_Ups) +  s3	
				{endif}
				
				



				 (L.L.antrieb_retarder_stage) 1 > 
				{if}
				   1250 (L.L.antrieb_current_ratio) / s3 s4
				{endif}


				l0 3 <=
				{if}
					(C.L.rpmgov) 75 - (C.L.antrieb_getr_ratio4) / s3 s4
				
				{endif}
				
				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_kickdown_sense) (C.L.antrieb_hold_gear) > &&
				 {if}
					(M.L.antrieb_throttlelimitor_1)
					6 (S.L.antrieb_getr_aktugang)
					1 (S.L.antrieb_is_downshift1) (S.L.antrieb_is_downshift)
					(L.L.antrieb_kuppl_M_dn_max)   s6
					(L.L.antrieb_kuppl_M_dn_min)   s7
					(L.L.engine_M) 0.8 * abs (S.L.antrieb_schaltmoment)
					(L.L.engine_throttle_injection) 
					 {if}
					  1 (S.L.antrieb_wandler_engage)
					  (L.L.antrieb_kuppl_M_dn_max)  (S.L.antrieb_schaltmoment) 
					 {endif}
					
					
					{endif}
			       		 				     	
			
						(M.L.antrieb_throttlegovernor_5)
					

					
						

					
				(M.L.antrieb_kickdown_time)
				(M.L.antrieb_gearwhine)

			{endif}
'end add
			l1 8 =
			{if}
				(C.L.antrieb_getr_ratio6) (S.L.antrieb_current_ratio) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)

				0 (S.L.antrieb_wandler_engage)

				(L.L.antrieb_kickdown) l0 3 <= || 
				{if}
					(C.L.antrieb_getr_autoSwDnkickdnSpd8) s3 s4
				{else}
					(C.L.antrieb_getr_autoSwDnMinSpd8) (L.L.antrieb_topodyn_factor_Ups) + s4
					
					(C.L.antrieb_getr_autoSwDnMaxSpd8) (L.L.antrieb_topodyn_factor_Ups) +  s3
					
					
				{endif}



				





				 (L.L.antrieb_retarder_stage) 1 > 
				{if}
				   1250 (L.L.antrieb_current_ratio) / s3 s4
				{endif}



				l0 3 <=
				{if}
					(C.L.rpmgov) 75 - (C.L.antrieb_getr_ratio5) / s3 s4
				
				{endif}


			(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_kickdown_sense) (C.L.antrieb_hold_gear) > &&
				{if}
					(M.L.antrieb_throttlelimitor_1)
					7 (S.L.antrieb_getr_aktugang) 
					1 (S.L.antrieb_is_downshift1) (S.L.antrieb_is_downshift)
					(L.L.antrieb_kuppl_M_dn_max)   s6
					(L.L.antrieb_kuppl_M_dn_min)   s7
					0 (S.L.antrieb_schaltmoment)

					(L.L.engine_throttle_injection) 
					 {if}
					  1 (S.L.antrieb_wandler_engage)
					  (L.L.antrieb_kuppl_M_dn_max)  (S.L.antrieb_schaltmoment) 
					 {endif}


					(T.L.ev_gear_downshift6)	
				{endif}


				
						(M.L.antrieb_throttlegovernor_6)
					
				
				
				(M.L.antrieb_kickdown_time)
				
				(M.L.antrieb_gearwhine)
			{endif}


	{endif}
	{endif}



					 

'	Testweise: Differenzialdrehzahlpfeifen

	(L.L.engine_n) (L.L.antrieb_n_kardanwelle) 2 * - (S.L.antrieb_n_differenz)




{end}



	{macro:antrieb_temperature}

'coolant thermostat

	(L.L.antrieb_temperature) 85 > 
	{if}
		1 (S.L.antrieb_thermostat_open)
	{else}
		(L.L.antrieb_temperature) 80 < 
		{if}
			0 (S.L.antrieb_thermostat_open)
		{endif}
	{endif}


' retarder kickout controller 
		(L.L.antrieb_temperature) 100 > 
	{if}
		0 (S.L.antrieb_retarder_enable)

	{endif}


       		(L.L.antrieb_temperature) 95 < 
		{if}
			1 (S.L.antrieb_retarder_enable)
		{endif}





	(L.L.antrieb_temperature) (L.S.Weather_Temperature) - (C.L.engine_Qrate_fan_factor) * (L.L.engine_n) * (S.L.antrieb_Qrate_fan)

	(L.L.antrieb_thermostat_open)
	{if}
		(L.L.engine_luefter) !
		{if}	
'			Reduktion der Kühlwirkung durch nur leer mitdrehenden Lüfter
			(L.L.antrieb_Qrate_fan) 0.5 * (S.L.antrieb_Qrate_fan)	
		{endif}
	{else}			
'		Nullwirkung des Lüfters durch Kühlwasserkurzschluss	
		0 (S.L.antrieb_Qrate_fan)
	{endif}

'Calculate transmission gear speed
	(L.L.antrieb_getr_ratio) (L.L.n_Wheel) * (L.L.antrieb_current_ratio) / (S.L.antrieb_current_RPM) 
'How worn out this the transmission fluid? 

'30000 miles is the standard change limit 


(L.L.antrieb_retardermoment) 0 max (L.L.engine_n) * 0.10472 * s0
(L.L.engine_M) abs (L.L.engine_n) * 0.10472 * s1

(L.L.antrieb_getr_aktugang)
 {if}



	(L.L.antrieb_wandler_engage) 
	{if}
	
	(L.L.antrieb_wandler_ny) (F.L.antrieb_wandler_my)  s4

	{else}
	 1 s4 
	{endif}

 (L.L.engine_n) (L.L.antrieb_getr_ratio) (L.L.n_Wheel) 30 max * / 1 max s3

' forces applied to mechincal gears 
l1 l0 +  (L.L.antrieb_current_ratio) abs l4 * * 



l0 + l3 *  (L.L.engine_Qrate_cooling)  - (L.L.antrieb_Qrate_fan)  - (C.L.engine_cvm_engine) / (L.S.Timegap) * (L.L.antrieb_temperature) + (S.L.antrieb_temperature) 

{else}

0 (L.L.engine_Qrate_cooling) - (L.L.antrieb_Qrate_fan) - (C.L.engine_cvm_engine)  / (L.S.Timegap) * (L.L.antrieb_temperature) + (S.L.antrieb_temperature) 




{endif}
	{end}

	{macro:antrieb_nyuszi_gomb}

			
	{end}


{macro:antrieb_getr_chkCh}

'	Berechnung der aktuellen Hochschaltschwelle: (l3 = bei Vollgas, l4 = bei Leergas)
	(L.L.clutch_antrieb_throttle_stellglied) s2 l3 * 1 l2 - l4 * +
{end}

	
{macro:antrieb_getr_schaltmoment}
'	Berechnung des Schaltmomentes (l6 = bei Vollgas, l7 = bei Leergas)
	(L.L.clutch_antrieb_throttle_stellglied) s5 l6 * 1 l5 - l7 * +
{end}

{macro:antrieb_throttlelimitor}

(C.L.partial_throttleinjection_governor) (S.L.Torque_Governor_set) 
0 (S.L.antrieb_gearwhine_fade) (S.L.antrieb_kickdown_sense)  (S.L.antrieb_is_downshift)	(S.L.gearchange) (S.L.gearchange_dn) (S.L.gearchange_up)
0 (S.L.antrieb_is_gearchange)
 1 (S.L.upshift)
0 (S.L.dnshift)
{end}

{macro:partialthrottle_rate}
0  (S.L.antrieb_is_gearchange)

{end}

{macro:antrieb_throttlelimitor_1}
 
0 (S.L.antrieb_gearwhine_fade) (S.L.antrieb_kickdown_sense)  (S.L.antrieb_is_gearchange) (S.L.gearchange) (S.L.gearchange_dn) (S.L.gearchange_up)
1 (S.L.antrieb_is_downshift)
(C.L.partial_throttleinjection_governor) (S.L.Torque_Governor_set) 
  0 (S.L.upshift)
1 (S.L.dnshift)
{end}



{macro:antrieb_gearwhine}
(L.L.antrieb_gearwhine_fade) (L.S.Timegap) 1 * + 10 min (S.L.antrieb_gearwhine_fade)
					
{end}
{macro:antrieb_throttlegovernor_R}

(C.L.throttleinjection_governor_R) (S.L.Torque_Governor_set)

			
{end}

{macro:antrieb_throttlegovernor_1c}

		(C.L.throttleinjection_governor_1c) (S.L.Torque_Governor_set)
		1 (S.L.antrieb_shift_throttle)
		(M.L.Torque_Governor_ADJ)	
{end}

{macro:antrieb_throttlegovernor_1l}
	(L.L.antrieb_getr_fest) !
	{if}
		(C.L.partial_throttleinjection_governor) (S.L.Torque_Governor_set)  
	{else}
		(C.L.throttleinjection_governor_1l) (S.L.Torque_Governor_set)
		(M.L.Torque_Governor_ADJ)
	 {endif}						
{end}

{macro:antrieb_throttlegovernor_2c}


	 (C.L.throttleinjection_governor_2c) (S.L.Torque_Governor_set)
	(M.L.Torque_Governor_ADJ)			
{end}


{macro:antrieb_throttlegovernor_2l}
	(L.L.antrieb_getr_fest) ! 
	{if}
			 
	(C.L.partial_throttleinjection_governor) (S.L.Torque_Governor_set) 
	{else}
	 (C.L.throttleinjection_governor_2l) (S.L.Torque_Governor_set)	
	(M.L.Torque_Governor_ADJ)
	  {endif}
{end}


{macro:antrieb_throttlegovernor_3}
	(L.L.antrieb_getr_fest) ! (L.L.antrieb_is_downshift) ! && (L.L.antrieb_wandler_engage) ||
	{if}
	
(C.L.partial_throttleinjection_governor) (S.L.Torque_Governor_set) 



	{else}

			(L.L.antrieb_getr_fest) ! (L.L.antrieb_is_downshift) && 
			{if}
			

			{else}
			   0 (S.L.upshift) 
			 (C.L.throttleinjection_governor_3) (S.L.Torque_Governor_set)
			(M.L.Torque_Governor_ADJ)
	   {endif}
	   {endif}




{end}

{macro:antrieb_throttlegovernor_4}
	(L.L.antrieb_getr_fest) ! (L.L.antrieb_is_downshift) ! && (L.L.antrieb_wandler_engage) ||
	{if}
	
	(C.L.partial_throttleinjection_governor) (S.L.Torque_Governor_set)  
	{else}

			(L.L.antrieb_getr_fest) ! (L.L.antrieb_is_downshift) && 
			{if}
			

			{else}
			   0 (S.L.upshift) 
			 (C.L.throttleinjection_governor_4) (S.L.Torque_Governor_set)
			(M.L.Torque_Governor_ADJ)
	   {endif}
	   {endif}

	   					   (L.L.antrieb_kickdown_sense) 1 >
					   {if}
					    (L.L.antrieb_kuppl_M_up_max) (S.L.antrieb_schaltmoment)
					    0 (S.L.antrieb_wandler_engage)
					   {endif}
{end}


{macro:antrieb_throttlegovernor_5}
	(L.L.antrieb_getr_fest) ! (L.L.antrieb_is_downshift) ! && (L.L.antrieb_wandler_engage) ||
	{if}
	
	 (C.L.partial_throttleinjection_governor) (S.L.Torque_Governor_set) 
	{else}

			(L.L.antrieb_getr_fest) ! (L.L.antrieb_is_downshift) &&
			{if}

			{else}
			 0 (S.L.upshift) 
			 (C.L.throttleinjection_governor_5) (S.L.Torque_Governor_set)
			(M.L.Torque_Governor_ADJ)
	   {endif}
	   {endif}


	   					   (L.L.antrieb_kickdown_sense) 1 >
					   {if}
					    (L.L.antrieb_kuppl_M_up_max) (S.L.antrieb_schaltmoment)
					    0 (S.L.antrieb_wandler_engage)
					   {endif}
{end}

	  
{macro:antrieb_throttlegovernor_6}
	(L.L.antrieb_getr_fest) !
	{if}
	(C.L.partial_throttleinjection_governor) (S.L.Torque_Governor_set) 
	{else}
	0 (S.L.upshift) 
	 (C.L.throttleinjection_governor_6) (S.L.Torque_Governor_set)
	  (M.L.Torque_Governor_ADJ)
	   {endif}
{end}



{macro:Torque_Governor_ADJ}



(L.L.Torque_Governor_set) ! 
{if}
	  (L.L.engine_n) (F.L.engine_M_maxThrottle) (S.L.Torque_Governor_set)


	{endif}
{end}

{macro:antrieb_kickdown_time}

	(L.L.antrieb_kickdown_sense) (L.S.Timegap) 1 * + (S.L.antrieb_kickdown_sense)


{end}


{macro:antrieb_is_gearchange}

	


	
{end}

{macro:antrieb_kickdown_time1}

	(L.L.antrieb_kickdown_sense1) (L.S.Timegap) 1 * + (S.L.antrieb_kickdown_sense1)


	
{end}

{macro:antrieb_brake_Dn}



{end}




	{macro:Max_Allow_RPM}
		(C.L.Max_Allow_RPM) (L.L.antrieb_current_ratio) / 
			
	{end}

	{macro:antrieb_nyuszi_gomb}

			
	{end}




